Code
## need cleaning
socio_demo_dta |>
mutate(degree = str_remove_all(degree, "[0-9]|-")) |>
mutate(degree = str_trim(degree, side = "both")) |>
count(degree, sort = T) |>
View()## need cleaning
socio_demo_dta |>
mutate(degree = str_remove_all(degree, "[0-9]|-")) |>
mutate(degree = str_trim(degree, side = "both")) |>
count(degree, sort = T) |>
View()plt_affective_fct <- plt_rage_fct("Affective")
## saving plot
ggsave(
plot = plt_affective_fct,
filename = "plot/fct_affective.jpg",
unit = "in",
width = 11,
height = 6,
dpi = 400
)
## diplay plot
knitr::include_graphics("plot/fct_affective.jpg")plt_critical_eval_fct <- plt_rage_fct("Critical")
## saving plot
ggsave(
plot = plt_critical_eval_fct,
filename = "plot/fct_critical_eval.jpg",
unit = "in",
width = 11,
height = 5,
dpi = 400
)
## diplay plot
knitr::include_graphics("plot/fct_critical_eval.jpg")plt_perceived_risk_fct <- plt_rage_fct("Perceived Risk")
## saving plot
ggsave(
plot = plt_perceived_risk_fct,
filename = "plot/fct_perceived_risk.jpg",
unit = "in",
width = 11,
height = 7,
dpi = 400
)
## diplay plot
knitr::include_graphics("plot/fct_perceived_risk.jpg")plt_rb_amplication_fct <- plt_rage_fct("Bait Amplication")
## saving plot
ggsave(
plot = plt_rb_amplication_fct,
filename = "plot/fct_rb_amplication.jpg",
unit = "in",
width = 11,
height = 5,
dpi = 400
)
## diplay plot
knitr::include_graphics("plot/fct_rb_amplication.jpg")plt_rb_cue_recognition_fct <- plt_rage_fct("Cue Recognition")
## saving plot
ggsave(
plot = plt_rb_cue_recognition_fct,
filename = "plot/fct_rb_cue_recognition.jpg",
unit = "in",
width = 11,
height = 6,
dpi = 400
)
## diplay plot
knitr::include_graphics("plot/fct_rb_cue_recognition.jpg")plt_rb_engagement_fct <- plt_rage_fct("Engagement")
## saving plot
ggsave(
plot = plt_rb_engagement_fct,
filename = "plot/fct_rb_engagement.jpg",
unit = "in",
width = 11,
height = 6,
dpi = 400
)
## diplay plot
knitr::include_graphics("plot/fct_rb_engagement.jpg")plt_rb_avoidance_fct <- plt_rage_fct("Avoidance")
## saving plot
ggsave(
plot = plt_rb_avoidance_fct,
filename = "plot/fct_rb_avoidance.jpg",
unit = "in",
width = 11,
height = 4,
dpi = 400
)
## diplay plot
knitr::include_graphics("plot/fct_rb_avoidance.jpg")## parallel analysis
fa.parallel(fct_likert_dta, fa = "fa")Parallel analysis suggests that the number of factors = 4 and the number of components = NA
# 7 factors
## elinating items
fa_rage_bait <-
fac(
r = fct_likert_dta,
nfactors = 7,
rotate = "varimax"
)
## printing factor loadings
print(fa_rage_bait$loadings, sort = TRUE, cutoff = 0.36)
Loadings:
MR1 MR6 MR3 MR4 MR5 MR2 MR7
ce3 0.614
ce4 0.605
as5 0.544 0.435
pr1 0.686
pr2 0.833
pr3 0.740
pr4 0.724
pr5 0.716
pr6 0.701
pr7 0.686
rcr5 0.617
rba2 0.603
rba3 0.583
rba4 0.539
ce1 0.642
sr1 0.833
sr2 0.665
sr3 0.598
are1 -0.523 0.405
as3 0.522
rcr2 0.523
rcr4 0.754
as1 0.700
rba1 0.685
rcr1 0.468
rcr3 0.418
ce2 0.463
as2 0.456
as4 0.495
are2 0.414
are3 0.407
are4 -0.361
are5 -0.452
are6 0.427
MR1 MR6 MR3 MR4 MR5 MR2 MR7
SS loadings 5.977 3.341 2.662 1.370 1.306 1.141 1.003
Proportion Var 0.176 0.098 0.078 0.040 0.038 0.034 0.029
Cumulative Var 0.176 0.274 0.352 0.393 0.431 0.465 0.494
# 5 factors
## elinating items
fct_likert_rm_dta <-
fct_likert_dta |>
select(-starts_with("ce"), -pr6, -pr7, -as1, -as4, -as5, -rcr3, -rba1, -are5)
fa_rage_bait <-
fac(
r = fct_likert_rm_dta,
nfactors = 5,
rotate = "varimax"
)
## printing factor loadings
print(fa_rage_bait$loadings, sort = TRUE, cutoff = 0.36)
Loadings:
MR1 MR3 MR2 MR4 MR5
pr1 0.646
pr2 0.839
pr3 0.850
pr4 0.726
pr5 0.643
rcr5 0.544
rba2 0.624
rba3 0.614
rba4 0.644
are2 0.512
sr1 0.796
sr2 0.685
sr3 0.594
rcr2 0.548
rcr4 0.796
as2 0.639
as3 0.523
rcr1 0.497
are1 -0.487
are3 0.361
are4
are6 0.424
MR1 MR3 MR2 MR4 MR5
SS loadings 3.247 2.735 2.064 1.069 0.950
Proportion Var 0.148 0.124 0.094 0.049 0.043
Cumulative Var 0.148 0.272 0.366 0.414 0.458
# 4 factors
## elinating items
fct_likert_rm_dta <-
fct_likert_dta |>
select(-as5, -are1, -are2, -are3, -are4, -are5, -are6, -rcr1, -rcr2, -rcr3, -rcr4, -pr6, -pr7, -rba1, -as1, -pr1, -pr3)
fa_rage_bait <-
fac(
r = fct_likert_rm_dta,
nfactors = 4,
rotate = "varimax"
)
## printing factor loadings
print(fa_rage_bait$loadings, sort = TRUE, cutoff = 0.46)
Loadings:
MR1 MR3 MR2 MR4
ce2 0.571
ce3 0.736
ce4 0.729
pr2 0.697
pr4 0.634
pr5 0.614
rcr5 0.612
rba2 0.647
rba3 0.587
rba4 0.567
ce1 0.616
sr1 0.821
sr2 0.631
sr3 0.679
as3 0.570
as4 0.550
as2 0.479
MR1 MR3 MR2 MR4
SS loadings 2.975 2.081 1.777 1.229
Proportion Var 0.175 0.122 0.105 0.072
Cumulative Var 0.175 0.297 0.402 0.474
# Define measurement model (outer model)
measurement_model <- constructs(
composite("Risk Awareness",
multi_items(c(rep("ce", 3), rep("pr", 3)), c(2:4, c(2, 4, 5)))),
composite("Rage Bait Recognition",
multi_items(c("rcr", rep("rba", 3), "ce"), c(5, 2:4, 1))),
composite("Avoidance Behavior", multi_items("sr", 1:3)),
composite("Affective Susceptibility", multi_items("as", 2:4))
)
# Define structural model (inner model)
# Hypothesized paths based on your SEM framework
structural_model <- relationships(
paths(from = "Rage Bait Recognition", to = c("Risk Awareness", "Affective Susceptibility", "Avoidance Behavior")),
paths(from = "Risk Awareness", to = c("Avoidance Behavior", "Affective Susceptibility")),
paths(from = "Affective Susceptibility", to = "Avoidance Behavior")
)
# Estimate the PLS model
pls_model <- estimate_pls(data = fct_likert_rm_dta,
measurement_model = measurement_model,
structural_model = structural_model)
# Summarize results
summary_pls_model <- summary(pls_model)
# plot the path diagram
plot(pls_model)# Run bootstrapping with 1000 resamples
boot_results <- bootstrap_model(pls_model, nboot = 10000, seed = 2026)
plot(boot_results)# Summarize bootstrap results
summary_boot_results <- summary(boot_results)summary_pls_model$reliability alpha rhoC AVE rhoA
Rage Bait Recognition 0.762 0.831 0.502 0.776
Risk Awareness 0.840 0.879 0.550 0.858
Affective Susceptibility 0.550 0.657 0.447 0.315
Avoidance Behavior 0.751 0.856 0.664 0.762
Alpha, rhoC, and rhoA should exceed 0.7 while AVE should exceed 0.5
summary_pls_model$validity$fl_criteria Rage Bait Recognition Risk Awareness
Rage Bait Recognition 0.708 .
Risk Awareness 0.463 0.742
Affective Susceptibility 0.168 0.314
Avoidance Behavior 0.063 0.173
Affective Susceptibility Avoidance Behavior
Rage Bait Recognition . .
Risk Awareness . .
Affective Susceptibility 0.668 .
Avoidance Behavior 0.183 0.815
FL Criteria table reports square root of AVE on the diagonal and construct correlations on the lower triangle.
summary_pls_model$validity$htmt Rage Bait Recognition Risk Awareness
Rage Bait Recognition . .
Risk Awareness 0.512 .
Affective Susceptibility 0.378 0.348
Avoidance Behavior 0.153 0.249
Affective Susceptibility Avoidance Behavior
Rage Bait Recognition . .
Risk Awareness . .
Affective Susceptibility . .
Avoidance Behavior 0.248 .
summary_boot_results$bootstrapped_paths |>
as.data.frame() |>
rownames_to_column("Path") |>
tibble() |>
mutate(across(.cols = is.numeric, ~ round(.x, 3))) |>
DT::datatable()summary_boot_results$bootstrapped_total_indirect_paths |>
as.data.frame() |>
rownames_to_column("Path") |>
tibble() |>
mutate(across(.cols = is.numeric, ~ round(.x, 3))) |>
DT::datatable()summary_boot_results$bootstrapped_total_paths |>
as.data.frame() |>
rownames_to_column("Path") |>
tibble() |>
mutate(across(.cols = is.numeric, ~ round(.x, 3))) |>
DT::datatable()
1.2 Social Media
1.2.1 Platform
Female students are more active across diverse platforms, while male students concentrate usage on fewer platforms.
Females reported higher usage across nearly all platforms, with Facebook, TikTok, and Instagram as their top three.
Males also favored Facebook, but their engagement was lower overall, with Instagram and TikTok following.
Code
1.2.2 Social media content engagement by gender
Gender differences highlight that females lean toward lifestyle and advocacy, while males gravitate more toward gaming and politics.
Females engaged most with entertainment, music, and lifestyle content, followed by news and educational posts.
Males showed similar interest in entertainment and music but had stronger engagement with gaming content compared to females.
Code
1.2.3 Social media content engagement by platform
Regardless of platform, students prioritize light, entertaining, and lifestyle-driven content, with serious topics less dominant.
Across platforms (Facebook, Instagram, TikTok, YouTube), entertainment, music, and lifestyle consistently ranked highest.
Educational and news content also attracted significant engagement, while politics and gaming were lower overall.
Code
1.2.4 Daily time spent on social media by platform
Heavy usage patterns suggest social media is deeply embedded in daily routines, with some platforms fostering extended engagement.
Majority of students spend 3–6 hours daily on Facebook, Instagram, TikTok, and YouTube.
A notable proportion also reported more than 6 hours, especially on platforms like Reddit, X (Twitter), and Tumblr.
Code
1.2.5 Daily time spent on social media by platform
Male students demonstrate more extreme usage, while female students cluster around moderate-to-high daily engagement
Females most often reported 3–6 hours daily, with fewer exceeding 6 hours.
Males were more likely to report over 6 hours of use, showing heavier overall consumption.
Code